package com.linzm.leetcode.primary.exercises3_20230122;

import java.util.HashSet;
import java.util.Set;

/**
 * @Author zimingl
 * @Date 2023/1/25 16:43
 * @Description: 有效的回旋镖
 */
public class Demo21_1037 {
    /**
     * 给定一个数组 points ，其中 points[i] = [xi, yi] 表示 X-Y 平面上的一个点，如果这些点构成一个
     * 回旋镖 则返回 true 。
     * 回旋镖 定义为一组三个点，这些点 各不相同 且 不在一条直线上 。
     * 输入：points = [[1,1],[2,3],[3,2]]
     * 输出：true
     */
    public static void main(String[] args) {
        int[][] points = {{1, 1}, {1, 6}, {1, 2}};
        Demo21_1037 demo21_1037 = new Demo21_1037();
        boolean boomerang = demo21_1037.isBoomerang2(points);
        System.out.println(boomerang);
    }

    private boolean isBoomerang2(int[][] points) {
        return (points[1][0] - points[0][0]) * (points[1][1] - points[2][1]) !=
                (points[1][0] - points[2][0]) * (points[1][1] - points[0][1]);
    }

    private boolean isBoomerang(int[][] points) {
        Set<String> setStr = new HashSet<>();
        for (int i = 0; i < points.length; i++) {
            String tmpStr = "" + points[i][0] + "-" + points[i][1];
            if (!setStr.contains(tmpStr)){
                setStr.add(tmpStr);
            } else {
                return false;
            }
        }
        if (points[0][0] == points[1][0] && points[0][0] == points[2][0]) {
            return false;
        }
        if (points[0][1] == points[1][1] && points[0][1] == points[2][1]) {
            return false;
        }

        if ((float) (points[0][0] - points[1][0]) / (points[0][1] - points[1][1]) ==
                (float) (points[0][0] - points[2][0]) / (points[0][1] - points[2][1])) {
            return false;
        } else {
            return true;
        }
    }
}
